//package com.ruoyi.common.utils;
//
//import cn.hutool.core.util.ObjectUtil;
//import com.ruoyi.common.utils.spring.SpringUtils;
//import lombok.extern.slf4j.Slf4j;
//import org.redisson.api.RLock;
//import org.redisson.api.RedissonClient;
//
//import java.util.concurrent.TimeUnit;
//
//@Slf4j
//public class RedissonLockUtil {
//
//    private static final RedissonClient REDISSON_CLIENT = SpringUtils.getBean(RedissonClient.class);
//
//    public static RLock tryLock(String lockKey, Long timeout, TimeUnit timeUnit) {
//        RLock lock = REDISSON_CLIENT.getLock(lockKey);
//        try {
//            boolean b = lock.tryLock(timeout, timeUnit);
//            if (!b) throw new RuntimeException("编辑中, 请稍后重试");
//        } catch (InterruptedException e) {
//            log.error("获取Redisson锁异常", e);
//            throw new RuntimeException(e);
//        }
//        return lock;
//    }
//
//    public static RLock tryLock(String lockKey) {
//        RLock lock = REDISSON_CLIENT.getLock(lockKey);
//        boolean b = lock.tryLock();
//        if (!b) throw new RuntimeException("编辑中, 请稍后重试");
//        return lock;
//    }
//
//    public static void unlock(RLock lock) {
//        if (ObjectUtil.isNull(lock)) return;
//        try {
//            if (lock.isLocked() && lock.isHeldByCurrentThread()) {
//                lock.unlock();
//            }
//        } catch (Exception e) {
//            log.error("释放锁失败", e);
//        }
//    }
//
//}
